#include<thread>
#include<iostream>
#include<unistd.h>
#include<mutex>
using namespace std;










// void Func(string &str,mutex&_mutex){
//     if(_mutex.try_lock()){//如果互斥量没有被锁定
//         for(int i=0;i<5;i++){
//             cout<<str<<i<<endl;
//             sleep(1);
//         }
//     }else{
//         cout<<str<<endl;
//     }

// }


// int main(){
// 	string str1="_thread1: ";
//     string str2="_thread2: ";
//     mutex _mutex;
// 	thread _thread1(Func,ref(str1),ref(_mutex));
//     thread _thread2(Func,ref(str2),ref(_mutex));
// 	_thread1.join();
//     _thread2.join();
// }

// void Func(int* x){
// 	*x += 5;
// }
// int main(){
// 	int a = 5;
// 	thread _thread1(Func,&a);
//     thread _thread2(Func,&a);
// 	_thread1.join();
//     _thread2.join();
// 	cout << a << endl;
// }

// void Func(int& x){
// 	x += 5;
// }

// int main(){
// 	int a = 5;
// 	thread _thread1(Func, std::ref(a));
//     thread _thread2(Func,std::ref(a));
// 	_thread1.join();
//     _thread2.join();
// 	cout << a << endl;
// }


// void ThreadFunc1(int& x){
// 	x += 10;
// }

// int main(){
// 	int a = 10;
// 	// 在线程函数中对a修改，不会影响外部实参
// 	thread _thread(ThreadFunc1, a);
// 	_thread.join();
// 	cout << a << endl;
// }


// void func(int n){
// 	for (int i = 0; i <n; i++){
// 		cout << i << endl;
// 	}
//     sleep(1);
// }
// int main(){
// 	thread _thread = thread(func, 5);
//     _thread.detach();
// 	return 0;
// }

// void func(int n){
//     cout<<this_thread::get_id()<<endl;//在线程执行的函数内部获取线程id
// 	for (int i = 0; i <n; i++){
// 		cout << i << endl;
// 	}
//     sleep(1);
// }
// int main(){
// 	thread _thread = thread(func, 5);
//     cout<<_thread.get_id()<<endl;//线程对象获取线程id

// 	if(_thread.joinable()){//判断线程是否还在执行，如果是就等待，否则就返回
//         _thread.join();
//     }
// 	return 0;
// }


// void func(int n){
// 	for (int i = 0; i <n; i++){
// 		cout << i << endl;
// 	}
// }
// int main()
// {
// 	thread _thread(func, 5);

// 	_thread.join();
// 	return 0;
// }

// void func(int n){
//     for(int i=0;i<n;i++){
//         cout<<i<<endl;
//     }
// }
// int main(){
//     thread _thread;//创建_thread对象
//     _thread=thread(func,5);
//     _thread.join();
//     return 0;
// }